package proteus.servlets;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import junit.framework.Assert;
import proteus.excepcion.DAOExcepcion;
import proteus.modelo.Cancha;
import proteus.modelo.Caracteristica;
import proteus.modelo.HorarioXCancha;
import proteus.modelo.Local;
import proteus.modelo.Promocion;
import proteus.modelo.RangoHorarios;
import proteus.modelo.Servicio;
import proteus.negocio.CanchaNegocio;
import proteus.negocio.CaracteristicaNegocio;
import proteus.negocio.PromocionNegocio;
import proteus.util.Funciones;

/**
 * Servlet implementation class RegistrarCancha
 */
@WebServlet("/RegistrarCanchaServlet")
public class RegistrarCanchaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrarCanchaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		CanchaNegocio neg = new CanchaNegocio();
		PromocionNegocio neg1 = new PromocionNegocio();
		CaracteristicaNegocio neg2 = new CaracteristicaNegocio();
		Collection<RangoHorarios> objRangoHorarios = new ArrayList<RangoHorarios>();
		Cancha objCancha = new Cancha();
		Local objLocal= new Local();

		try {
			Collection<Local> locales = neg.listarLocales();			
			Collection<Caracteristica> caracteristicas= neg2.listarCaracteristica();			
			Collection<Promocion> promociones = neg1.listarPromocion();	
			
			// Guardando datos en el scope SESSION
			HttpSession session = request.getSession();
			session.setAttribute("LOCALES", locales);
			session.setAttribute("PROMOCIONES", promociones);
			session.setAttribute("CARACTERISTICAS", caracteristicas);
						
			request.setAttribute("REQfechaini", Funciones.fechaActualInicial());
			request.setAttribute("REQfechafin", Funciones.fechaActualInicial());
			request.setAttribute("REQhoraini", "- Seleccione -");
			request.setAttribute("REQhorafin", "- Seleccione -");
			request.setAttribute("REQhoraIniPM", "- Seleccione -");
			request.setAttribute("REQhoraFinPM", "- Seleccione -");
			
			session.setAttribute("NOMBRECancha", "");
			session.setAttribute("CODLocal", null);
			request.setAttribute("TXTTarifa", "0.00");
			session.setAttribute("NOMBREArchivo", "");
			
			session.setAttribute("OBJLocal", objLocal);
			session.setAttribute("OBJCancha", objCancha);
			session.setAttribute("SELCaracteristicas", null);
			session.setAttribute("OBJRangoHorarios", objRangoHorarios);
			
		} 
		catch (DAOExcepcion e) { 
		request.setAttribute(
		"MSG_ERROR", e.getMessage()); 
		}  
		RequestDispatcher rd = request
				.getRequestDispatcher("registrarCancha.jsp");
		rd.forward(request, response);
		// Forward llama al jsp	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession sesion = request.getSession();		
		//recibo la data
		String nombreCancha  = request.getParameter("nombreCancha");
		String codLocal 	 = request.getParameter("codLocal");
		String nombreArchivo = request.getParameter("nombreArchivo");
		String txtTarifa 	 = request.getParameter("txtTarifa");
		String txtPromocion  = request.getParameter("txtPromocion");

		String txtfechaini = request.getParameter("txtfechaini");
		String txtfechafin = request.getParameter("txtfechafin");
		String txthoraini = request.getParameter("cbohoraini");
		String txthorafin = request.getParameter("cbohorafin");
		
		String[] selCaracteristicas = request.getParameterValues("selCaracteristicas");
		String[] grbCaracteristicas = request.getParameterValues("yd");
		
	//	traigo un objeto rango horarios
		
	  	Collection<RangoHorarios> objRangoHorarios = (ArrayList<RangoHorarios>) sesion.getAttribute("OBJRangoHorarios");

		Cancha objCancha = (Cancha) sesion.getAttribute("OBJCancha");
		Local objLocal = (Local) sesion.getAttribute("OBJLocal");
							
	//	declaro un arreglo de caracteristicas						
		Collection<Caracteristica> objCaracteristica= new ArrayList<Caracteristica>();		
		
	//	System.out.println("objCaracteristica.size()="+objCaracteristica.size());	
		
		try {
		String accion = request.getParameter("hddaccion");

		//	creo un objeto cancha
	//	Cancha objCancha = new Cancha();	

		//	lleno el objeto cancha
		
	//	objCancha.setNoCancha(nombreCancha);
	//	objCancha.setNoArchivoFoto(nombreArchivo);

		
		
// ****************** REGISTRAR CANCHA *************************		
		
		if(accion.equals("agregar")){
			

		//	creo objeto local
		
		//	Local objLocal= new Local();
			int nuLocal	   = Integer.parseInt(codLocal);					
			objLocal.setCoLocal(nuLocal);						
			
		//	((Cancha) objCancha).setNoCancha(nombreCancha);
		//	((Cancha) objCancha).setNoArchivoFoto(nombreArchivo);
		//	((Cancha) objCancha).setoLocal(objLocal);
								
		//	debo recibir las caracteristicas, si las hay
			if(selCaracteristicas!=null && selCaracteristicas.length > 0){
				
				sesion.setAttribute("SELCaracteristicas", selCaracteristicas);
				
			//llenamos las caracteristicas elegidas
			for(int j=0; j<selCaracteristicas.length; j++) 
				{ 
					Caracteristica vo = new Caracteristica();
					vo.setCoCaracteristica(Integer.parseInt(selCaracteristicas[j]));
					objCaracteristica.add(vo);
				}			
			}else{
				objCaracteristica = null;			
			}		

			if(grbCaracteristicas!=null){
			for(String grbCaracteristica: grbCaracteristicas){ 
				System.out.println("grbCaracteristica = "+ grbCaracteristica + " -yd- ");
			}
			}
			if(selCaracteristicas!=null){
			for(String selCaracteristica: selCaracteristicas){ 
				System.out.println("selCaracteristica = "+ selCaracteristica + " - ");
			}
			}
			
			System.out.println(nombreCancha+"-"+nombreArchivo+"-"+objLocal.getCoLocal()+"-"+objCaracteristica.size()+"-"+objRangoHorarios.size());
			
		//	Inserto la Cancha
			
			CanchaNegocio neg = new CanchaNegocio();
		
			neg.insertarCancha(nombreCancha, nombreArchivo, objLocal, objCaracteristica);
			
		//	objCancha = neg.obtenerCancha(nombreCancha);
		//	System.out.println(objCancha.getNoCancha()+"*"+objCancha.getCoCancha());
			
		//	objCancha = (Cancha) sesion.getAttribute("OBJCancha");
			
			sesion.setAttribute("CODLocal", 	  codLocal);
			request.setAttribute("OBJCaracteristica", objCaracteristica);

		}		
		
// ****************** AGREGAR HORARIO *************************
		
		if(accion.equals("agregarHorario")){			

			Double cboTarifa = Double.valueOf(txtTarifa).doubleValue();		
			int cbohoraini = Integer.parseInt(txthoraini);
			int cbohorafin = Integer.parseInt(txthorafin);
			
		//	lleno el objeto rango horarios
			
			RangoHorarios rng = new RangoHorarios();
			rng.setRngFechaInicio(txtfechaini);
			rng.setRngFechaFin(txtfechafin);
			rng.setRngHorarInicio(txthoraini);
			rng.setRngHoraFin(txthorafin);
			rng.setRngTarifa(txtTarifa);
			rng.setRngPromocion(txtPromocion);
			objRangoHorarios.add(rng);			
			
			String txtfechaIni = Funciones.cambiaFormatoFecha(txtfechaini);
			String txtfechaFin = Funciones.cambiaFormatoFecha(txtfechafin);

			System.out.println(objCancha.getNoCancha()+"*"+objCancha.getoLocal().getCoLocal()+"*"+txtfechaIni+"*"+txtfechaFin+"*"+ objRangoHorarios.size());
			
		
		//  Actualizo Horario x Cancha
			
			CanchaNegocio neg = new CanchaNegocio();
			
			objCancha = neg.obtenerCancha(nombreCancha);
			
			
		//	Local x = new Local();
		//  	x.setCoLocal(2);
		//	Cancha y = new Cancha();
		//  	y.setCoCancha(36);


		//	neg.actualizarHorarioXCancha(x, y, "2012-03-23", "2012-04-31", 15, 20, 25.0, "1");
			
				  	
			//System.out.println("objCaracteristica.size()="+objCaracteristica.size());	
			//System.out.println(nombreCancha+" - "+codLocal+" - "+nombreArchivo+" - "+txtTarifa+" - "+txtfechaIni+" - "+txtfechaFin+" - "+txthoraini+" - "+txthorafin);			
		//	Local x = new Local();
		//		x.setCoLocal(2);
		//	Cancha y = new Cancha();
		// 		y.setCoCancha(33);
		  	
		// 	Promocion z = new Promocion();
		// 		z.setCoPromocion(5);
		  
		  	
		//  neg.registraPromocionXCancha(x, y, "2012-03-23", "2012-03-31", 12, 15, z);

			request.setAttribute("REQhoraIniPM",  Funciones.formatoHora(cbohoraini));
			request.setAttribute("REQhoraFinPM",  Funciones.formatoHora(cbohorafin));

		
		}
		
		}	catch (DAOExcepcion e) { 
			
			objCancha = (Cancha) sesion.getAttribute("OBJCancha");
			request.setAttribute(
					"MSG_ERROR", e.getMessage());    
				}
		//LAS GUARDO PARA COLOCARLAS EN LAS CAJAS RESPECTIVAS
		sesion.setAttribute("NOMBRECancha",  nombreCancha);
		sesion.setAttribute("NOMBREArchivo", nombreArchivo);
		request.setAttribute("TXTTarifa",     txtTarifa);
	
		request.setAttribute("REQfechaini", txtfechaini); 
		request.setAttribute("REQfechafin", txtfechafin); 
		request.setAttribute("REQhoraini",  txthoraini);  
		request.setAttribute("REQhorafin",  txthorafin);
		objCancha = (Cancha) sesion.getAttribute("OBJCancha");
		
	//	sesion.setAttribute("OBJCancha", objCancha);

		
   //	sesion.setAttribute("OBJRangoHorarios", objRangoHorarios);
				
			RequestDispatcher rd = request.getRequestDispatcher("registrarCancha.jsp");
			// Forward llama al jsp	
			rd.forward(request, response);
	}
}
